As should be appreciated, a virtual machine is a software application operating on a computing device for the purpose of emulating a hardware system. Typically, although not necessarily, the virtual machine is employed on the computing device to host a user application or the like while at the same time isolating such user application from such computing device or from other applications on such computing device. A different variation of a virtual machine may be written for each of a plurality of different computing device so that any user application written for the virtual machine can be operated on any of the different computing devices. Thus, a different variation of the user application for each different computing device is not needed.
Virtual machines traditionally have been unable to achieve high-performance 3D graphics due to the limitations of prior approaches to providing such virtual machines with graphics capabilities. In particular, prior approaches focused on device emulation, or used the same graphics protocols used over a network, with associated copying overhead. However, 3D graphics in particular require advanced visual effects with higher visual quality, and can only function well if 3D acceleration with good performance and appropriate capabilities are available.
New architectures for computing devices and new software now allow a single computing device to run a plurality of partitions, each of which can be employed to instantiate a virtual machine to in turn host an instance of an operating system. In such a computing device, a graphics hardware device of the computing device such as a graphics card with a graphics processor may be dynamically assigned to a particular partition so that the particular partition can directly control such graphics hardware device. Such particular partition, acting as a provider of 3D or video acceleration and display capabilities or a ‘video services partition’ (‘VSP’), can provide video services to another partition acting as a consumer of such capabilities or a ‘video client partition’ (‘VCP’). Thus, the VCP must communicate with the VSP to accomplish graphics-related operations.
In the course of a virtual machine emulating hardware, a significant amount of resources are consumed by inefficiencies associated with software emulation of each virtual hardware device. Thus, in the case of the VCP accessing the graphics hardware device in the course of performing video services, such inefficiencies and the overhead and complexity of device emulation may be overwhelming to the point that emulating the graphics hardware device is impractical. Even if proper emulation is achieved, performance is likely below acceptable standards due to the large amount of software processing required to emulate the graphics hardware device. Principally, such unacceptable performance is due to the fact that graphics data associated with the memory of one virtual machine must be transferred to the memory of another virtual machine in the course of producing graphics.
As may be appreciated, an analogous situation to one partition performing graphics services for another partition on a computing device may be one networked computing device providing graphics displaying services for a separate networked computing device according to a network graphics protocol. However, such a protocol likely does not provide for direct data sharing, and at times provides a more restrictive graphics interface to the producer of the graphics than is actually available locally to the displayer of such graphics.
Accordingly, a need exists for a system that allows a VSP on a computing device to provide high performance 3D graphics services to a VCP on the computing device. In particular, a need exists for such a system that allows the VSP to share resources and capabilities associated with the graphics hardware device with the VCP such that the VCP and VSP can directly share graphics data and the VCP can employ the same graphics interface that is available to the VSP at high performance.